Submission #679578

#TimeUsernameProblemLanguageResultExecution timeMemory
679578speedyArda곤돌라 (IOI14_gondola)C++14
20 / 100
51 ms6020 KiB
#include "gondola.h"
#include "bits/stdc++.h"
using namespace std;
int freq[250005];
int valid(int n, int inputSeq[])
{
  if(n == 1)
    return 1;
  vector<pair<int, int> > originals;
  set<int> elems;
  for(int i = 0; i < n; i++)
  {
      elems.insert(i + 1);
      if(freq[inputSeq[i]] > 0)
        return 0;
      freq[inputSeq[i]]++;
      if(inputSeq[i] <= n)
      {
        originals.push_back({inputSeq[i], i});
      }
      
        
  }
  if(originals.size() <= 1) // All elements or n-1 elements are changed, so valid
    return 1; 
  int res = 1;
  originals.push_back({originals[0].first, originals[0].second + n});
  elems.erase(originals[0].first);
  int curr = (originals[0].first + 1) % (n+1), idx = originals[0].second + 1;
  if(curr == 0)
    curr++;
  for(int i = 1; i < originals.size(); i++)
  {
    //cout << res << "\n";
    while(idx < originals[i].second)
    {
      if(elems.find(curr) == elems.end())
        res = 0;
      elems.erase(curr);
      curr = (curr + 1) % (n+1);
      if(curr == 0)
        curr++;
      idx++;
    }
    

    if(curr != originals[i].first)
      res = 0;
    //elems.erase(originals[i].first);
    if(i + 1 != originals.size())
    {
      if(elems.find(originals[i].first) == elems.end())
        res = 0;
      elems.erase(originals[i].first);
    }
    //cout << res << " " << idx << " " << curr << " " << originals[i].first << "\n";
    idx++;
     curr = (curr + 1) % (n+1);
      if(curr == 0)
        curr++;
  }
  return res;
}

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

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
  return -2;
}

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

int countReplacement(int n, int inputSeq[])
{
  return -3;
}

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:32:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |   for(int i = 1; i < originals.size(); i++)
      |                  ~~^~~~~~~~~~~~~~~~~~
gondola.cpp:50:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     if(i + 1 != originals.size())
      |        ~~~~~~^~~~~~~~~~~~~~~~~~~
#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...