You are not logged in. Please login at www.codechef.com to post your questions!

×

ZCO 2014 Smartphone

Why is my code not getting accepted even when i have tested all selfmade testcases to be running correctly

My code is at given link- link

asked 08 Nov '15, 11:57

vedant2080's gravatar image

0★vedant2080
914
accept rate: 0%


Here's my solution to the problem.

Also could you please upvote my answer as I need karma points to ask a question related to the olympiad, I'm having problems with little red riding hood

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
long long n;
cin >> n;   
vector<long long> ns(n);


long long i =0;
for(i=0;i<n;i++)
{
    cin >> ns[i];
}
long long max = 0;
sort(ns.begin(), ns.end());
for(long long i =0;i<n;i++)
{
    max = max > (n-i) * ns[i] ? max : (n-i) * ns[i] ;
}
cout << max;
return 0;
}
link

answered 11 Nov '15, 12:23

archit129's gravatar image

1★archit129
9239
accept rate: 0%

import java.util.*; class Smartphone { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("Enter the data in the given format"); int N=sc.nextInt(); //Stores number of potential customers int budg[]=new int[N]; //Array to store budget of customers for(int i=0;i<N;i++) budg[i]=sc.nextInt();

    //Sorting the array
    for(int i=0;i<N-1;i++)
    {
        int pmin=i;
        for(int j=i+1;j<N;j++)
        {
            if(budg[j]<budg[pmin])
            pmin=j;
        }
        int temp=budg[i];
        budg[i]=budg[pmin];
        budg[pmin]=temp;
    }

    //Checking for maximum revenue
    int rev=0,maxRev=0;
    for(int i=0;i<N;i++)
    {
        if(budg[i]*(N-i)>maxRev)
        {maxRev=budg[i]*(N-i);rev=budg[i];}
    }

    System.out.println("Revenue : "+rev+"\nMaximum Revenue : "+maxRev);
}

}

link

answered 29 Sep '16, 13:22

bbiswabasu's gravatar image

3★bbiswabasu
11
accept rate: 0%

But your sorting method is not efficient,you can use Arrays.sort(which uses quick sort(more efficient then this). Thanks upvote if you like my amswer,and accept my gift(10 points)

(29 Sep '16, 17:57) vivek962★

You are overcomplicating the things. Do this : Sort the array. let the 0-indexed array be arr[i] You know that for each element , the elements after it will have the budget >= arr[i] . So, traverse backwards. For each i, if we choose arr[i] as the price for app, we will get arr[i]*(n-i) rupees (Becase all the people after the current person will at least arr[i] money so they will buy this.)

Here's the code if you have any doubts but seriously first understand and try it yourself : https://www.codechef.com/viewsolution/8716059

#include<bits/stdc++.h>
using namespace std;
// Input macros
#define s(n)                        scanf("%d",&n)
#define sc(n)                       scanf("%c",&n)
#define sl(n)                       scanf("%lld",&n)
#define sf(n)                       scanf("%lf",&n)
#define ss(n)                       scanf("%s",n)

// Useful hardware instructions
#define bitcount                    __builtin_popcount
#define gcd                         __gcd

// Useful container manipulation / traversal macros
#define forall(i,a,b)               for(int i=a;i<b;i++)
#define foreach(v, c)               for( typeof( (c).begin()) v = (c).begin();  v != (c).end(); ++v)
#define all(a)                      a.begin(), a.end()
#define in(a,b)                     ( (b).find(a) != (b).end())
#define pb                          push_back
#define fill(a,v)                    memset(a, v, sizeof a)
#define sz(a)                       ((int)(a.size()))
#define mp                          make_pair

//Lengthy data types
#define ull unsigned long long
#define ui unsigned int
#define us unsigned short
// code starts here
int main(){
    long long int n;
    cin >> n;
    long long int cap[n];
    for(int i=0;i<n;i++)cin >> cap[i];
    sort(cap,cap+n);
    long long int currmax=0;
    long long int prev=-1;
    for(long long int i=n-1;i>=0;i--){
        //if(cap[i]==prev)continue;
        currmax=max(currmax,((n-i))*cap[i]);
        prev=cap[i];
    }
    cout << currmax << endl;
    return 0;
}
link

answered 08 Nov '15, 12:37

theweblover007's gravatar image

2★theweblover007
10116
accept rate: 0%

+theweblover007

Why doesn't my code work for the second test case,because I think my solution is similar to yours.

https://www.codechef.com/viewsolution/8729874

link

answered 08 Nov '15, 22:56

r4huln's gravatar image

2★r4huln
11
accept rate: 0%

nvm got it,thanks for your answer though I was trying to sort using merge sort like the OP but the built in sort function is way easier and I guess quicker.

link

answered 08 Nov '15, 23:11

r4huln's gravatar image

2★r4huln
11
accept rate: 0%

edited 08 Nov '15, 23:11

Lines 24-33 is where the problem is. In this problem, if we sort the array in increasing order, then the revenue generated for a given price in the array will be generated by all customers after that in the array as they will have higher prices to offer. As reference, you might want to look at this short and simple code.

#include <bits/stdc++.h>
using namespace std;
struct _ { ios_base::Init i; _() { cin.sync_with_stdio(0); cin.tie(0); } } _;

///////////////////////////////////////////////////////////////////////////////
  #define endl '\n'
  #define ll long long
  #define ld long double
  #define pb push_back
  #define mt make_tuple
  #define in(a) for (auto& i: a)
  #define tbeg clock_t _t=clock();
  #define test ll t; cin >> t; for (ll tc=1; tc<=t; tc++) {
  #define tend cout << "\n\nTime: " << (double)(clock()-_t)/CLOCKS_PER_SEC;
///////////////////////////////////////////////////////////////////////////////


int main()
{

    ll n, ans=INT_MIN;
    cin >> n;
    ll a[n];
    in(a) cin >> i;
    sort(a, a+n);
    for (ll i=0; i<n; i++) ans=max(ans, a[i]*(n-i));
    cout << ans << endl;

}
link

answered 09 Nov '15, 10:09

anukul's gravatar image

4★anukul
513
accept rate: 0%

edited 09 Nov '15, 10:13

Hi everyone.

Can past year ZCO participants explain how is the whole procedure of submitting the answers in the competition. Suppose if I submit a wrong answer, will I get another chance?

As for the post above, my solution was this-

https://www.codechef.com/viewsolution/8714051

or

http://pastebin.com/27HEgwr4

link

answered 10 Nov '15, 12:49

aayushpy's gravatar image

2★aayushpy
411
accept rate: 0%

yes, you will. and ur best solution will be taken for evaluation.

(10 Nov '15, 19:40) anupam_datta4★

You can check out here if you have any doubt the post---------

link is----http://ideone.com/jgUGPL

link

answered 10 Nov '15, 13:18

ring1234's gravatar image

2★ring1234
614
accept rate: 7%

First I also made a O(n^2) solution but that will obviously not pass the second subtask. What you need to do is simply sort the array in descending order and start from the biggest element. Keep going to the smaller element and in the loop find out the product of a[i]*(n-i). The biggest element after processing this is your answer. Apart from the sorting this is o(n) and with O(n log n) so a pretty good improvement I would say. I got 100.

include<bits stdc++.h="">

using namespace std;

define ll long long

define e '\n'

int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n; cin>>n; int a[n]; for(int i=0;i<n;i++) cin="">>a[i]; sort(a,a+n); ll ma=0,tmp=0; for(int i=n-1;i>=0;i--){ tmp=a[i]*(n-i); ma=max(tmp,ma); } cout<<ma; return 0; }

link

answered 11 Nov '15, 11:41

asc4155's gravatar image

2★asc4155
1
accept rate: 0%

What's wrong with my code (excluding the slow sorting algorithm)? https://ideone.com/pKbqZh

link

answered 15 Nov '15, 22:15

owneriekno1's gravatar image

2★owneriekno1
11
accept rate: 0%

@owneriekno1 , Why the hell are you not sorting using inbuilt sort function, its way easier and way faster. just write : sort(arr,arr+n); Also, add : #include<bits stdc++.h=""> and remove every other includes file. Makes the coding easier. Also, a hint : Look for corner cases.

link

answered 16 Nov '15, 12:57

theweblover007's gravatar image

2★theweblover007
10116
accept rate: 0%

Try this.. It's simple .....It's Working


include<bits stdc++.h=""> using namespace std; int main() { long long int n,maxR=0; cin>>n;//geting number of customers. long long int arr[n+9]; for(int i=0;i<n;i++) {="" cin="">>arr[i]; } sort(arr,arr+n);//sort the aray in acending order for(long long int i=0;i<n;++i) {="" if(="" (arr[i]*="" (n-i)="" )="">maxR) {
maxR = (arr[i]* (n-i) ); } } cout<<maxr<<"\\n";<br/>return 0; }

link

answered 17 May '18, 19:24

onkarkoli's gravatar image

1★onkarkoli
1
accept rate: 0%

toggle preview
Preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported
  • mathemetical formulas in Latex between $ symbol

Question tags:

×427
×399
×247
×24

question asked: 08 Nov '15, 11:57

question was seen: 3,858 times

last updated: 17 May '18, 19:24