Submission #1029641

# Submission time Handle Problem Language Result Execution time Memory
1029641 2024-07-21T06:58:45 Z Malix Gondola (IOI14_gondola) C++14
90 / 100
18 ms 2356 KB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef pair<int,int> pi;
typedef vector<pi> pii;
typedef tuple<int,int,int> tii;
typedef vector<ll> li;
typedef vector<li> lii;

#define REP(i,a,b) for(int i=a;i<b;i++)
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define LSOne(s) ((s)&(-s))

ll INF=1e18+10;
int inf=1e9+10;
ll M=1e9+9;

int valid(int n, int inputSeq[])
{
  bool flag=1;
  int pos=0,val=inf;
  REP(i,0,n)if(inputSeq[i]<val){
    val=inputSeq[i];
    pos=i;
  }
  if(val>n){
    sort(inputSeq,inputSeq+n);
    REP(i,0,n-1)if(inputSeq[i]==inputSeq[i+1])flag=0;
    if(flag)return 1;
    return 0;
  }
  int c=pos;
  pos++;val++;
  pos%=n;val%=n;if(val==0)val=n;
  while(pos!=c){
    if(inputSeq[pos]!=val&&inputSeq[pos]<=n){
      flag=0;
      break;
    }
    pos++;val++;
    pos%=n;val%=n;if(val==0)val=n;
  }
  sort(inputSeq,inputSeq+n);
  REP(i,0,n-1)if(inputSeq[i]==inputSeq[i+1])flag=0;
  if(flag)return 1;
  return 0;
}

//----------------------

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
  int pos=0,val=inf;
  REP(i,0,n)if(gondolaSeq[i]<val){
    val=gondolaSeq[i];
    pos=i;
  }
  priority_queue<pi,vector<pi>,greater<pi>> pq;
  int c=pos;pos%=n;val%=n;if(val==0)val=n;
  if(gondolaSeq[pos]!=val)pq.push({gondolaSeq[pos],val});
  pos++;val++;
  pos%=n;val%=n;if(val==0)val=n;
  while(pos!=c){
    if(gondolaSeq[pos]!=val)pq.push({gondolaSeq[pos],val});
    pos++;val++;
    pos%=n;val%=n;if(val==0)val=n;
  }
  vi ans;int k=n+1;
  while(!pq.empty()){
    int x=pq.top().F;
    int y=pq.top().S;
    pq.pop();
    ans.PB(y);
    REP(i,k,x)ans.PB(i);
    k=x+1;
  }
  int m=ans.size();
  REP(i,0,m)replacementSeq[i]=ans[i];
  return m;
}

//----------------------

int countReplacement(int n, int inputSeq[])
{
  ll ans=1;
  if(valid(n,inputSeq)==0)return 0;
  int val=inputSeq[0];
  if(val>n)ans=n;
  int pos=n-1;vi arr;
  while(inputSeq[pos]>n&&pos>=0)arr.PB(inputSeq[pos--]);
  if(arr.empty())return 1;
  arr.PB(n);pos=0;
  ll k=0;ll val2=arr[0];pos++;k++;
  int s=arr.size();
  while(pos<s){
    int t=val2-arr[pos]-1;
    if(t!=0){
      vector<ll> brr(21);
      brr[0]=1;brr[1]=k;
      REP(i,2,21){
        brr[i]=brr[i-1]*brr[i-1];
        brr[i]%=M;
      }
      REP(i,0,20)if(t&(1<<i)){
        ans*=brr[i+1];
        ans%=M;
      }
    }
    val2=arr[pos];
    pos++;k++;
  }
  return (int)ans;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 4 ms 804 KB Output is correct
7 Correct 14 ms 1116 KB Output is correct
8 Correct 8 ms 1116 KB Output is correct
9 Correct 3 ms 416 KB Output is correct
10 Correct 11 ms 1112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 376 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 5 ms 796 KB Output is correct
7 Correct 10 ms 1112 KB Output is correct
8 Correct 7 ms 1048 KB Output is correct
9 Correct 3 ms 608 KB Output is correct
10 Correct 11 ms 1116 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 4 ms 604 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 11 ms 1232 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 432 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 352 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 440 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 448 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 412 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 5 ms 980 KB Output is correct
12 Correct 6 ms 1112 KB Output is correct
13 Correct 10 ms 1628 KB Output is correct
14 Correct 6 ms 1116 KB Output is correct
15 Correct 13 ms 2356 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 13 ms 1460 KB Output is correct
10 Correct 11 ms 1368 KB Output is correct
11 Correct 5 ms 860 KB Output is correct
12 Correct 6 ms 860 KB Output is correct
13 Correct 2 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 440 KB Output is correct
9 Correct 13 ms 1496 KB Output is correct
10 Correct 10 ms 1372 KB Output is correct
11 Correct 4 ms 664 KB Output is correct
12 Correct 5 ms 860 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Incorrect 18 ms 2224 KB Output isn't correct
15 Halted 0 ms 0 KB -