int main(int argc, char **argv) { int a = atoi(*(argv+1)); int b = atoi(*(argv+2)); int c = atoi(*(argv+3)); int d = atoi(*(argv+4)); char charsIn[100]; while(NULL != fgets(charsIn, sizeof(charsIn), stdin)) { int locations[4]; int currentChar = 0; for(int i = 0; i < 4; ++i) { char temp[100]; resetArr(100, temp); for(int j = 0;; ++j) { if(!isdigit(charsIn[currentChar]) && charsIn[currentChar] != '-') { currentChar++; break; } temp[j] = charsIn[currentChar]; currentChar++; } locations[i] = atoi(temp); } int x1 = a * (locations[0]) + b * (locations[1]); int y1 = c * (locations[0]) + d * (locations[1]); int x2 = a * (locations[2]) + b * (locations[3]); int y2 = c * (locations[2]) + d * (locations[3]); printf("%d\n", abs(x1 - x2) + abs(y1 - y2)); } return 0; }
SongEditorWindow::SongEditorWindow(SlideGroup *g, QWidget *parent) : AbstractSlideGroupEditor(g,parent), m_slideGroup(0), m_editWin(0), m_syncToDatabase(true), m_arrModel(0) { setAttribute(Qt::WA_DeleteOnClose,true); QWidget *centerWidget = new QWidget(this); QVBoxLayout * vbox = new QVBoxLayout(centerWidget); // Title editor QHBoxLayout * hbox1 = new QHBoxLayout(); QLabel *label = new QLabel("&Title: "); hbox1->addWidget(label); m_title = new QLineEdit(); label->setBuddy(m_title); hbox1->addWidget(m_title); vbox->addLayout(hbox1); // Default arrangement QHBoxLayout *hbox2 = new QHBoxLayout(); label = new QLabel("Default Arrangement: "); hbox2->addWidget(label); m_defaultArrangement = new QLineEdit(); m_defaultArrangement->setReadOnly(true); QPalette p = m_defaultArrangement->palette(); p.setColor(QPalette::Base, Qt::lightGray); m_defaultArrangement->setPalette(p); hbox2->addWidget(m_defaultArrangement); vbox->addLayout(hbox2); // My arrangement QHBoxLayout *hbox3 = new QHBoxLayout(); label = new QLabel("&Arrangement:"); hbox3->addWidget(label); //m_arrangement = new QLineEdit(); //m_arrangement->setReadOnly(false); m_arrangement = new QComboBox(); m_arrangement->setEditable(true); m_arrangement->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); connect(m_arrangement, SIGNAL(editTextChanged(const QString&)), this, SLOT(arrTextChanged(const QString&))); connect(m_arrangement, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(arrCurrentIndexChanged(const QString&))); connect(m_arrangement, SIGNAL(activated(const QString &)), this, SLOT(arrActivated(const QString&))); label->setBuddy(m_arrangement); hbox3->addWidget(m_arrangement); QPushButton *btn = new QPushButton("Default"); btn->setIcon(QIcon(":/data/stock-undo.png")); btn->setToolTip("Reset arrangement to default arrangement (above)"); connect(btn, SIGNAL(clicked()), this, SLOT(resetArr())); hbox3->addWidget(btn); btn = new QPushButton("Show/Hide List"); btn->setCheckable(true); btn->setIcon(QIcon(":/data/stock-find-and-replace.png")); btn->setToolTip("Show/hide the arrangement drag-and-drop list"); connect(btn, SIGNAL(toggled(bool)), this, SLOT(arrListViewToggled(bool))); hbox3->addWidget(btn); QPushButton *listBtn = btn; vbox->addLayout(hbox3); setWindowIcon(QIcon(":/data/icon-d.png")); QFont font; font.setFamily("Courier"); font.setFixedPitch(true); font.setPointSize(10); //QHBoxLayout *editorHBox = new QHBoxLayout(); //editorHBox->setContentsMargins(0,0,0,0); QSplitter *editorHBox = new QSplitter(); m_editor = new MyQTextEdit; m_editor->setFont(font); editorHBox->addWidget(m_editor); connect(m_editor, SIGNAL(textChanged()), this, SLOT(editTextChanged())); //m_editor->setAcceptRichText(false); m_highlighter = new SongEditorHighlighter(m_editor->document()); // Arrangement preview box m_arrangementPreview = new MyQTextEdit; m_arrangementPreview->setFont(font); m_arrangementPreview->setReadOnly(true); QPalette p2 = m_arrangementPreview->palette(); p2.setColor(QPalette::Base, Qt::lightGray); m_arrangementPreview->setPalette(p2); editorHBox->addWidget(m_arrangementPreview); //m_editor->setAcceptRichText(false); (void*)new SongEditorHighlighter(m_arrangementPreview->document()); // List view m_arrModel = new ArrangementListModel(); connect(m_arrModel, SIGNAL(blockListChanged(QStringList)), this, SLOT(arrModelChange(QStringList))); QListView *arrListView = new QListView(); arrListView->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding)); arrListView->setViewMode(QListView::ListMode); arrListView->setWrapping(false); arrListView->setFlow(QListView::TopToBottom); arrListView->setMovement(QListView::Free); arrListView->setWordWrap(true); arrListView->setSelectionMode(QAbstractItemView::ExtendedSelection); arrListView->setDragEnabled(true); arrListView->setAcceptDrops(true); arrListView->setDropIndicatorShown(true); arrListView->setModel(m_arrModel); m_arrListView = arrListView; editorHBox->addWidget(arrListView); editorHBox->setStretchFactor(0,10); editorHBox->setStretchFactor(1,10); editorHBox->setStretchFactor(2,1); //vbox->addWidget(m_editor); //vbox->addLayout(editorHBox); vbox->addWidget(editorHBox); QHBoxLayout * hboxBottom = new QHBoxLayout(); m_tmplEditButton = new QPushButton("Edit &Template..."); m_tmplEditButton->setIcon(QIcon(":data/stock-select-color.png")); m_tmplEditButton->setToolTip("Edit the template associated with this song arrangement"); connect(m_tmplEditButton, SIGNAL(clicked()), this, SLOT(editSongTemplate())); hboxBottom->addWidget(m_tmplEditButton); QPushButton *tmplResetButton = new QPushButton(""); tmplResetButton->setIcon(QIcon(":data/stock-undo.png")); tmplResetButton->setToolTip("Reset template on this song to use the current template set in the main Song Browser"); connect(tmplResetButton, SIGNAL(clicked()), this, SLOT(resetSongTemplate())); hboxBottom->addWidget(tmplResetButton); hboxBottom->addStretch(); m_syncBox = new QCheckBox("S&ync Changes to DB"); m_syncBox->setToolTip("If checked, saving changes will update the master song database as well as the copy of the song in this document"); m_syncBox->setChecked(true); connect(m_syncBox, SIGNAL(toggled(bool)), this, SLOT(setSyncToDatabase(bool))); hboxBottom->addWidget(m_syncBox); QCheckBox *showArrPreviewCb = new QCheckBox("Arrangement Preview"); showArrPreviewCb->setToolTip("Show/hide arrangement preview window"); showArrPreviewCb->setChecked(true); connect(showArrPreviewCb, SIGNAL(toggled(bool)), this, SLOT(showArrPreview(bool))); hboxBottom->addWidget(showArrPreviewCb); btn = new QPushButton("&Save Song"); btn->setIcon(QIcon(":data/stock-save.png")); connect(btn, SIGNAL(clicked()), this, SLOT(accepted())); hboxBottom->addWidget(btn); btn = new QPushButton("&Cancel"); connect(btn, SIGNAL(clicked()), this, SLOT(close())); hboxBottom->addWidget(btn); vbox->addLayout(hboxBottom); //setLayout(vbox); setCentralWidget(centerWidget); resize(500,600); QSettings set; bool flag = set.value("songdb/arrlistview",true).toBool(); arrListViewToggled(flag); listBtn->setChecked(flag); flag = set.value("songdb/arrpreview",true).toBool(); showArrPreviewCb->setChecked(flag); showArrPreview(flag); // m_editWin = new SlideEditorWindow(); // connect(m_editWin, SIGNAL(closed()), this, SLOT(editorWindowClosed())); // } }
string minWindow(string S, string T) { // Start typing your C/C++ solution below // DO NOT write int main() function string resultStr; int table[256]; int m = T.size(); int leftMatchNum = m; //reset table to +1 mode resetArr(T,table); int wTable[256]; for (int i=0;i<256;i++) wTable[i] = 0; int left = -1; int right = -1; //bool firstSearch = true; for (int i=0;i<S.size();i++){ //if found match //Hit if (table[S[i]] > 0) { wTable[S[i]]++; if (left == -1) left = i; } if (wTable[S[i]] <=table[S[i]]){ bool done = true; for (int j=0;j<256;j++) { if (table[j] > 0) { if (wTable[j] < table[j]){ done = false; } } } if (done) { right = i; //purge /* for (int j=left;j<right;j++){ //if Hit if (table[S[j]] > 0) { if (wTable[S[j]] >table[S[j]]){ wTable[S[j]]--; left = j+1; }else { break; } }else { left = j+1; } }*/ if (resultStr.empty() || right-left+1 < resultStr.size()) resultStr = S.substr(left,(right-left+1)); } }else { if (S[i] == S[left]) { //found another one, need purge right = i; //purge for (int j=left;j<right;j++){ //if Hit if (table[S[j]] > 0) { if (wTable[S[j]] >table[S[j]]){ wTable[S[j]]--; left = j+1; }else { break; } }else { left = j+1; } } if (right-left+1 < resultStr.size()) resultStr = S.substr(left,(right-left+1)); } } } if (left == -1 || right == -1) return ""; return resultStr; }