제출 #307753

#제출 시각아이디문제언어결과실행 시간메모리
307753kylych03곤돌라 (IOI14_gondola)C++14
30 / 100
22 ms1280 KiB
#include "gondola.h" //#include "grader.cpp" #include <bits/stdc++.h> using namespace std; int vis[1000001]; int res1[100001]; pair <int, int> arr[1000001]; int valid(int n, int inputSeq[]) { int ind = 0; int num = 0; for(int i = 0 ; i< n ; i++){ if(inputSeq[i]>=1 && inputSeq[i] <=n ){ ind = i; num = inputSeq[i]; } if(inputSeq[i] <1) return 0; if(vis[inputSeq[i]] ==1) return 0; vis[inputSeq[i]]=1; } if(num==0) return 1; for(int i = 0 ; i < n; i++) if(inputSeq[i] <= n){ if( (ind + (inputSeq[i] - num) +n ) %n!=i ) return 0; } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int mx = 0; int mxind=0; int ind = 0; int num = 0; int cnt = 0; for(int i = 0 ; i < n; i++){ arr[i] = make_pair(gondolaSeq[i] , i+1); vis[gondolaSeq[i]]=1; if( gondolaSeq[i]>=1 && gondolaSeq[i] <=n ){ ind = i+1; num = gondolaSeq[i]; } if ( mx < gondolaSeq[i]){ mx = gondolaSeq[i]; mxind =i; } } sort(arr, arr + n); if(num == 0){ vector <int > vec; for(int i = mx-1; i>n;i--){ if(vis[i]==0) vec.push_back(i); } cout << vec.size()<<endl; for(int i= 0; i < n ;i++){ int t = arr[i].second; int p = arr[i].first; replacementSeq[cnt]=t; cnt ++; while( vec.size () > 0 && p > vec.back()){ replacementSeq[cnt]=vec.back(); cnt ++; vec.pop_back(); } } return mx - n; } for(int i =1; i <=n ;i++){ res1[i-1] = (num + i -ind + n)%n ; if(res1[i-1]==0) res1[i-1]=n; } vector <int > vec; for(int i = mx-1; i>n;i--){ if(vis[i]==0) vec.push_back(i); } for(int i =0 ; i <n;i++){ int t = arr[i].second; int p = arr[i].first; if(gondolaSeq[t-1]!=res1[t-1]){ replacementSeq[cnt]=res1[t-1]; cnt ++; while( vec.size () > 0 && gondolaSeq[t-1] > vec.back()){ replacementSeq[cnt]=vec.back(); cnt ++; vec.pop_back(); } } } return mx - n; } //---------------------- int countReplacement(int n, int inputSeq[]) { int ind = 0; int num = 0; for(int i = 0 ; i< n ; i++){ if(inputSeq[i]>=1 && inputSeq[i] <=n ){ ind = i; num = inputSeq[i]; } if(inputSeq[i] <1) return 0; if(vis[inputSeq[i]] ==1) return 0; vis[inputSeq[i]]=1; } if(num!=0) for(int i = 0 ; i < n; i++) if(inputSeq[i] <= n){ if( (ind + (inputSeq[i] - num) +n ) %n!=i ) return 0; } return 1; }

컴파일 시 표준 에러 (stderr) 메시지

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:90:13: warning: unused variable 'p' [-Wunused-variable]
   90 |         int p = arr[i].first;
      |             ^
gondola.cpp:40:9: warning: variable 'mxind' set but not used [-Wunused-but-set-variable]
   40 |     int mxind=0;
      |         ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...